package com.justnow.offer;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author justnow
 * Created on 2020-09-17
 * Description
 *
 * //        2 2
 * //        .E
 * //        S.
 * //        YES
 * //        2 2
 * //        #E
 * //        S#
 */
public class JingDong02 {

    public static boolean dfs(int x,char[][]g,boolean t[][],int q){
        if(x<0||q<0||x>=g.length||q>=g[0].length||g[x][q]=='#'||t[x][q]){
            return false;
        }
        if(g[x][q]=='E'){
            return true;
        }
        if(!t[x][q]){
            t[x][q]=true;
            return dfs(x+1,g,t,q)||dfs(x,g,t,q+1)||
                    dfs(x-1,g,t,q)||dfs(x,g,t,q-1);
        }
        return false;
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int T=Integer.valueOf(sc.nextLine());
        List<String> ans=new ArrayList<>();
        for(int i=0;i<T;i++){
            String str=sc.nextLine();
            String strings[]=str.split(" ");
            boolean flag=false;
            int nn=Integer.valueOf(strings[0]);
            int mm=Integer.valueOf(strings[1]);
            char c[][]=new char[nn][mm];
            for(int j=0;j<nn;j++){
                c[j]=sc.nextLine().toCharArray();
            }
            boolean t[][]=new boolean[nn][mm];
            boolean judge=false;
            for(int p=0;p<nn;p++){
                for(int q=0;q<mm;q++){
                    if(c[p][q]=='S'){
                        if(dfs(p,c,t,q)){
                            judge=true;
                            ans.add("YES");
                            break;
                        }
                    }
                }
                if(judge){
                    break;
                }
            }
            if(!judge){
                ans.add("NO");
            }
        }
        for(int i=0;i<ans.size();i++){
            System.out.println(ans.get(i));
        }
    }
}
